In the field of high performance computing, powerful computers are combined with engineering ingenuity to solve hard problems such as weather forecasting, fluid simulation and oil exploration. Computational performance, i.e. how many floating point numbers can be calculated per second, determine how big problems can be solved. An intuitive way to achieve higher throughput is to perform calculations in parallel, as exemplified by super computers consisting of thousands of computers merged into a big and expensive machine. An alternative is general purpose computations on GPUs (GPGPU). This computer architecture offer parallelity up to the hundreds on a single commodity card.

In this chapter, the history and current state of general purpose computations on GPUs is presented, followed by an introduction to OpenCL, a platform independent standard for parallel computations. This chapter gives motivation for doing computations on GPUs, and explains how OpenCL provides an interface and programming model for doing so. OpenCL is used in this thesis, so a good understanding of how it is built up and used is crucial.